package proyectoFC_2_3_3.koyicabuto.funciones;

import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

/**
 * Clase en la que encotramos métodos de uso común para trabajar con nuestro WebService.
 * @author jmartin
 *
 */
public class FuncionesWebService {
	
	private static final String NAMESPACE = "http://hellowebservice";
	private static String URL="http://10.0.2.2:8080/HelloWebService/services/HelloWSImpl?WSDL"; 
	private static final String SOAP_ACTION =  "http://hellowebservice/";
	
	
	/**
	 * Método con el que establecemos la conexión con nuestro WebService, hacemos una llamada al metodo que viene definido
	 * por la variable nombreMetodo y a este metodo le pasamos como valor la variable value.
	 * 
	 * @param nombreMetodo
	 * @param value
	 * @return
	 */
	public String conectaMetodoWebService(String nombreMetodo, String value){
		
		String devuelto = null;
		
		SoapObject request = new SoapObject(NAMESPACE, nombreMetodo);
	    
		if(value != null){
		    PropertyInfo propInfo=new PropertyInfo();
		    propInfo.name="arg0";
		    propInfo.type=PropertyInfo.STRING_CLASS;
		    propInfo.setValue(value);
		    
		    request.addProperty(propInfo);
		}
	    
	    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
	    envelope.setOutputSoapObject(request);
	    
	    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
	    try {
			androidHttpTransport.call(SOAP_ACTION + nombreMetodo, envelope);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    
	    
	    SoapPrimitive resultsRequestSOAP = null;
		try {
			resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();
		} catch (SoapFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(resultsRequestSOAP != null){
			devuelto = resultsRequestSOAP.toString();
		}else{
			devuelto = null;
		}
	    
	    return devuelto;
	}
}
	
